package com.gitee.huanminabc.utils_tools.fast_cache;

import lombok.Data;

import java.io.Serializable;
import java.util.concurrent.atomic.AtomicLong;
@Data
public class CacheObj<K, V> implements Serializable {
    private static final long serialVersionUID = 1L;
    private final K key;
    private final V obj;
    /**
     * 上次访问时间
     */
    public  long lastAccess= System.currentTimeMillis();;
    /**
     * 访问次数
     */
    public AtomicLong accessCount = new AtomicLong();
    /**
     * 对象存活时长，-1表示永久存活
     */
    public  long ttl;
    /**
     * 构造
     * @param key 键
     * @param obj 值
     */
    public CacheObj(K key, V obj) {
        this.key = key;
        this.obj = obj;
        this.ttl = 0;
    }


    public void setTtl(long ttl) {
        //小于当前时间则表示已过期
        if(ttl< System.currentTimeMillis()){
            this.ttl = -1;
            return;
        }
        this.ttl = ttl;
    }

    /**
     * 判断是否过期
     *
     * @return 是否过期
     */
    public boolean isExpired() {
        if (this.ttl > 0) {
            return System.currentTimeMillis() > this.ttl;
        }
        return false;
    }

}
